template <class T> GNFORCEINLINE 
typename DefaultSPStorage<T>::PointerType GetImpl(const DefaultSPStorage<T>& sp)
{ return sp.pointee_; }

template <class T> GNFORCEINLINE
const typename DefaultSPStorage<T>::StoredType& GetImplRef(const DefaultSPStorage<T>& sp)
{ return sp.pointee_; }

template <class T> GNFORCEINLINE 
typename DefaultSPStorage<T>::StoredType& GetImplRef(DefaultSPStorage<T>& sp)
{ return sp.pointee_; }


template <class T> GNFORCEINLINE 
typename DefaultSPStorage<T>::PointerType GetImpl(const DefaultSPStorage<T>* sp)
{ return sp->pointee_; }

template <class T> GNFORCEINLINE
const typename DefaultSPStorage<T>::StoredType& GetImplRef(const DefaultSPStorage<T>* sp)
{ return sp->pointee_; }

template <class T> GNFORCEINLINE 
typename DefaultSPStorage<T>::StoredType& GetImplRef(DefaultSPStorage<T>* sp)
{ return sp->pointee_; }